/*
    1.定义枚举类, 枚举出日志等级;
    2.提供转换接口: 将枚举类型转换为对应的字符串类型
*/

#ifndef __L_LEVEL_H__
#define __L_LEVEL_H__

namespace Log
{
    class LogLevel
    {
    public:
        enum class value
        {
            UNKNOW = 0,  //未知等级
            DEBUG,      //调试信息等级
            INFO,       //提示信息等级
            WARNNING,    //警告信息等级
            ERROR,      //错误信息等级
            FATAL,      //致命信息等级
            OFF         //关闭日志输出
        };

        //字符串转换接口
        static const char* ToString(LogLevel::value level)
        {
            #define TOSTRING(name) #name
            switch(level)
            {
                case value::DEBUG:
                    return TOSTRING(DEBUG);
                case value::INFO:
                    return TOSTRING(INFO);
                case value::WARNNING:
                    return TOSTRING(WARNNING);
                case value::ERROR:
                    return TOSTRING(ERROR);
                case value::FATAL:
                    return TOSTRING(FATAL);
                case value::OFF:
                    return TOSTRING(OFF);
            #undef TOSTRING
                default:
                    return "UNKNOW";
            }
            
            return "UNKNOW";
        }
    };
}

#endif


